gcapp.set "messageVisible","false"
#msg=@gcapp.scriptMessage

CreateList list
list.addString "Afrikaans (af)","Albanian (sq)","Arabic (ar)", "Armenian (hy)"
list.addString "Basque (eu)","Belarusian (be)","Bengali (bn)","Bosnian (bs)"
list.addString "Breton (br)","Bulgarian (bg)","Burmese (my)","Catalan (ca)"
list.addString "Chinese  (zh)","Corsican (co)","Croatian (hr)","Czech (cs)"
list.addString "Danish (da)","Dutch (nl)",";English (en)","Estonian (et)"
list.addString "Finnish (fi)","French (fr)"
list.addString "German (de)","Greek (el)","Hebrew (he)","Hindi  (hi)"
list.addString "Hungarian (hu)","Icelandic (is)","Irish (ga)","Indonesian (id)"
list.addString "Italian (it)","Japanese (ja)","Korean (ko)","Lao (lo)"
list.addString "Latvian (lv)","Lithuanian (lt)","Luxembourgish (lb)"
list.addString "Macedonian (mk)","Maori (mi)","Malay (ms)","Malayalam (ml)"
list.addString "Maltese (mt)","Mongolian (mn)","Nepali (ne)","Norwegian (no)"
list.addString "Pashto (ps)","Persian (fa)","Polish (pl)","Portuguese (pt)"
list.addString "Punjabi (pa)","Romanian (ro)","Romansh (rm)","Russian (ru)"
list.addString "Sanskrit (sa)","Serbian (sr)","Slovak (sk)","Slovenian (sl)"
list.addString "Spanish (es)","Scottish (gd)","Swedish (sv)","Thai (th)"
list.addString "Tibetan (bo)","Turkish (tr)","Turkmen (tk)"
list.addString "Ukrainian (uk)","Urdu (ur)","Uzbek (uz)"
list.addString "Vietnamese (vi)","Welsh (cy)"

#prompt=local("Insert language text or a two letter code")
#cancel=local("Cancel")
#codeOnly=local("Insert Code Only")
UserChoice "#res",#prompt,list,"Common Languages","false",local("Insert Text"),#cancel,#codeOnly

if #res[1]=#cancel
  exit
else if #res[1]=#codeOnly
  #res[2] = chars("-2\-1\"&#res[2])
endif

! find the record
#locMsg=local("Unexpected error")
#locError=local("Unable to find the location to attach language text")
#locOK=local("OK")
gcapp.get gdoc,"frontDocument"
gdoc.get rec,"keyRecord"
ifNDef rec
  UserOption "#done",#locMsg,#locError,#locOK
  exit
endif

! find parent tag (NAME or _PLACE)
Words "#wrds",1,0,#msg
if #wrds[0]<2
  UserOption "#done",#locMsg,#locError,#locOK
  exit
endif
rec.findStructures names,#wrds[1]
if @names.count<#wrds[2]
  UserOption "#done",#locMsg,#locError,#locOK
  exit
endif
#i=#wrds[2]-1
names.#i.get parent

! if more need to find the TRAN structure
if #wrds[0]>2
  rec.findStructures trans,"TRAN"
  if @trans.count<#wrds[3]
    UserOption "#done",#locMsg,#locError,#locOK
    exit
  endif
  #i=#wrds[3]-1
  trans.#i.get parent
endif

! Insert or set LANG subordinate to parent
parent.findStructures langs,"LANG"
if @langs.count>0
  ! change existing structure
  langs.0.get lang
  lang.set "contents",#res[2]
else
  ! insert a structure
  parent.addStructure lang,"LANG",#res[2]
endif
